package 每日一题;

import java.util.ArrayList;
import java.util.List;

public class T1222_可以攻击国王的皇后 {
    //从国王位置出发 向8个方向寻找
    public List<List<Integer>> queensAttacktheKing(int[][] queens, int[] king) {

        int[][] direction = new int[][]{{1, 0}, {-1, 0}, {0, -1}, {0, 1}, {1, 1}, {-1, 1}, {1, -1}, {-1, -1}};

        int[][] chessboard = new int[8][8];

        List<List<Integer>> result = new ArrayList<>();

        //将王后放置在棋盘上
        for (int i = 0; i < queens.length; i++) {
            int[] queenIndex = queens[i];
            chessboard[queenIndex[0]][queenIndex[1]] = 1;
        }

        //国王从8个方向开始寻找王后 每个方向找到的第一个就是最近的
        for (int i = 0; i < direction.length; i++) {
            int[] indexOffset = direction[i];
            int x = king[0];
            int y = king[1];
            //直到在这个方向上找到或者 出界
            while (true) {
                //判断是否出界
                x += indexOffset[0];
                y += indexOffset[1];

                if (x < 0 || x >= 8 || y < 0 || y >= 8) {
                    break;
                }

                if (chessboard[x][y] == 1) {
                    ArrayList<Integer> list = new ArrayList<>();
                    list.add(x);
                    list.add(y);
                    result.add(list);
                    break;
                }

            }

        }

        return result;

    }
}
